\documentclass{book}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[francais]{babel}
\usepackage{fullpage}
\usepackage{graphicx}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{dsfont}
\usepackage{amssymb}
\usepackage{fancyhdr}
\usepackage{fancybox}
\usepackage{subfigure}
\usepackage{minitoc}
\usepackage{pdfpages}

\usepackage{lastpage}
\usepackage{a4wide}
\usepackage{color}
\usepackage{fancybox}
\usepackage{moreverb}
\usepackage{hangcaption}
\usepackage{listings}


%\usepackage{french}
%\setcounter{minitocdepth}{1}
%\usepackage[paper=a4paper,left=25mm,right=25mm,top=25mm,bottom=25mm]{geometry}
\addtolength{\headsep}{+1cm}
\addtolength{\textheight}{-1cm}
\addtolength{\footskip}{+1cm}
%---EN-TETE-ET-PIED-DE-PAGE----------------------------------------------------

\renewcommand{\headrulewidth}{0.5pt}
\renewcommand{\footrulewidth}{0.5pt}

% --- style de page (pour les en-tete) ---
\pagestyle{fancy}
\renewcommand{\chaptermark}[1]{\markboth{#1}{}}
\renewcommand{\sectionmark}[1]{\markright{\thesection\ #1}}




\fancyhf{}%
\fancyhead[LE,RO]{\bfseries\thepage}
\fancyhead[LO]{
\textsc{
\begin{minipage}{0.75\textwidth}
\begin{flushleft}
%\bfseries
\rightmark
\end{flushleft}
\end{minipage}
}} \fancyhead[RE]{
\textsc{
\begin{minipage}{0.75\textwidth}
\begin{flushright}
%\bfseries
\leftmark
\end{flushright}
\end{minipage}}}
\renewcommand{\headrulewidth}{0.5pt}
\renewcommand{\footrulewidth}{0.5pt}
\addtolength{\headheight}{0.5pt} \fancypagestyle{plain}{
\fancyhead{}
\renewcommand{\headrulewidth}{0pt}
}
\fancyfoot[CE]{ENSIMAG $3^{\text{ème}}$ année}
\fancyfoot[RE]{\textsc{Projet produit structuré}}
\fancyfoot[LE]{\textsc{bnp panka}}
\fancyfoot[LO]{\textsc{Projet produit structuré}}
\fancyfoot[CO]{ENSIMAG $3^{\text{ème}}$ année}
\fancyfoot[RO]{\textsc{bnp panka}}

\title{Projet Evaluation de Produits Structurés}
\author{Alexandre Cohen - James Djeumen - Paul Garnero - Ismaël Soobratty}
\date{\today}

\lstset{ %
language=C++,         % choose the language of the code
basicstyle=\footnotesize,       % the size of the fonts that are used for the code
numbers=left,                   % where to put the line-numbers
numberstyle=\footnotesize,      % the size of the fonts that are used for the line-numbers
stepnumber=2,                   % the step between two line-numbers. If it's 1 each line will be numbered
numbersep=5pt,                  % how far the line-numbers are from the code
backgroundcolor=\color{white},  % choose the background color. You must add \usepackage{color}
showspaces=false,               % show spaces adding particular underscores
showstringspaces=false,         % underline spaces within strings
showtabs=false,                 % show tabs within strings adding particular underscores
frame=single,                   % adds a frame around the code
tabsize=2,                      % sets default tabsize to 2 spaces
captionpos=b,                   % sets the caption-position to bottom
breaklines=true,                % sets automatic line breaking
breakatwhitespace=false,        % sets if automatic breaks should only happen at whitespace
escapeinside={\%*}{*)}          % if you want to add a comment within your code
}
\newenvironment{fminipage}%
{\begin{Sbox}\begin{minipage}}%
{\end{minipage}\end{Sbox}\fbox{\TheSbox}}

\begin{document}


\lstset{ numbers=left, tabsize=3, frame=single,
numberstyle=\ttfamily, basicstyle=\footnotesize}

\thispagestyle{empty}

\begin{center}

\makebox[\textwidth][l]{ \raisebox{0pt}[0pt][0pt]{
\includegraphics[scale=0.8]{Images/BNP.jpg}
} }
\makebox[\textwidth][r]{ \raisebox{0pt}[0pt][0pt]{
\includegraphics[scale=0.2]{Images/logo_ensimag}
} }
INP Grenoble -- ENSIMAG\\
École Nationale Supérieure d'Informatique et de Mathématiques Appliquées de Grenoble\\

\vspace{3cm}

\shadowbox{
\begin{minipage}{1\textwidth}
\begin{center}
~~\\
~~
\\
{\bf \LARGE BNP PANKA}
\\
~~
\end{center}
\end{minipage}
}\\


\vspace{3cm}

\textbf{\Large Projet Evaluation de Produit Structuré}

\vspace{1cm}

\textbf{Alexandre Cohen - James Djeumen - Paul Garnero - Ismaël
Soobratty}

\vspace{1cm}

\textbf{Octobre 2008 - Février 2009}

\vspace{4cm}

\textbf{Sujet encadré par Yves Denneulin et Sonia Jimenez}

\end{center}
~~
\newpage
~~

\dominitoc
\tableofcontents

\chapter{Introduction}
\noindent BNP Panka est un Fonds Commun de Placement (FCP) à capital
garanti* à l’échéance le 2 avril 2013, éligible à l'assurance vie /
CIF (Compte d’Instruments Financiers).\\
Ce fond est commercialisé du 4 décembre 2007 au 14 mars 2008, 13h
(jusqu'au 7 mars 2008 inclus pour les souscriptions du FCP Panka
effectuées au sein d'un contrat d'assurance vie ou de
capitalisation).\\
\noindent \textit{* Le capital garanti correspond au capital investi
lequel correspond au capital versé, hors fiscalité et prélèvements
sociaux, et déduction faite de la commission de souscription et,
pour les souscriptions dans un contrat d'assurance vie et/ou de
capitalisation, diminué des frais d'entrée / d'arbitrage et des
frais de gestion annuels du contrat, hors fiscalité et prélèvements
sociaux.}\\
~~\\
\noindent Panka permet de profiter partiellement du potentiel de
hausse moyenne de 8 indices boursiers internationaux exposés sur :\\\\
$ - $ les places boursières incontournables de l'économie
mondiale (Zone euro, Etats-Unis, Japon)\\
$ - $ les marchés de pays émergents dynamiques (Chine,
Corée du Sud, République Tchèque, Hongrie, Pologne)\\
$ - $ différentes classes d'actifs (actions, matières premières).\\
~~\\
\noindent La performance finale de Panka correspond à 80 \% de la
meilleure performance moyenne parmi les 3 paniers d’indices suivants :\\\\
$ - $ le Panier "Classique" composé à parts égales des
indices DJ Euro
Stoxx 50, S\&P 500 et Nikkei 225.\\
$ - $ le Panier "Croissance" composé de 5 indices à parts égales :\\
les 3 indices du Panier "Classique" auxquels s’ajoutent 2 indices
supplémentaires, le Nasdaq 100 (indice actions de la Nouvelle
Economie américaine) et le DJ AIG Commodity Index (pour les matières
premières).\\
$ - $ le Panier "Global" composé de 8 indices à parts égales :\\
les 5 indices du Panier "Croissance" auxquels s’ajoutent 3 indices
supplémentaires, le FTSE Xinhua China (indice actions de la Chine),
le KOSPI 200 (indice actions de la Corée du Sud) et le CECE Traded
Index (pour la République Tchèque, la Hongrie et la Pologne).\\
~~\\
\noindent La performance moyenne d'un panier d'indices est égale à
la moyenne arithmétique de ses 20 performances trimestrielles
constatées à chacune des 20 dates de constatation trimestrielle
depuis l’origine. Si la performance finale est négative, elle sera
considérée comme nulle.\\
~~\\
\noindent Le droit de rétractation prévu par l'article L341-16 du
Code monétaire et financier, relatif au démarchage, ne s'applique
pas aux parts ou actions d'OPCVM.\\

\chapter{Analyse financière}
\minitoc
~~\\
\noindent Dans un premier temps nous expliciterons les
caractéristiques du contrat (description des indices sous-jacents,
fonctionnement de l'OPCVM, détail de la garantie et examen des
flux). Nous examinerons dans un second temps les risques liés à ce
contrat, pour le vendeur ainsi que pour l'acheteur. Nous
expliciterons ensuite les frais et les commissions liés au produit.
Nous terminerons cette partie par une étude
historique.


\section{Description du produit}
\noindent BNP PANKA est un fonds à formule, construit dans la
perspective d'un investissement à horizon 5 ans. Le client a la
possibilité de rentrer dans le fonds en achetant des parts de 200
euros. La garantie financière apportée par le contrat lui assure la
restitution de la somme initialement investie, ceci quelle que soit
la performance du fonds. Cette somme peut être majorée en cas de
performance positive du fonds (voir partie sur la garantie). La
performance finale retenue pour le calcul de la garantie s'appuie
sur trois paniers d'indices, représentatifs d'expositions
diversifiées géographiquement et sectoriellement.


\subsection{Indices sous-jacents}


\subsubsection{Panier "Classique"}
\noindent $\bullet$ \underline{DJ Euro Stoxx 50:}\\
Le DJ Euro Stoxx 50 est un indice \textbf{action} de la \textbf{zone euro}.\\
Voici à titre indicatif son évolution depuis le 14 mars 2003.\\
\begin{center}
\includegraphics[width=13cm]{Images/eurostoxx.jpg}
\end{center}
\noindent $\bullet$ \underline{S\&P 500:}\\
Le S\&P 500 est un indice des marchés \textbf{actions} des \textbf{Etats-Unis}, regroupant 500 sociétés américaines par secteur et dont les capitalisations sont parmi les plus importantes et les plus liquides.\\
Voici à titre indicatif son évolution depuis le 14 mars 2003.\\
\begin{center}
\includegraphics[width=13cm]{Images/S&P.jpg}
\end{center}
\noindent $\bullet$ \underline{Nikkei 225:}\\\\
Le Nikkei 225, indice du marché \textbf{actions} du \textbf{Japon} regroupe 225 sociétés du TSE, pour leur importante capitalisation et liquidité.\\
Voici à titre indicatif son évolution depuis le 14 mars 2003.\\
\begin{center}
\includegraphics[width=13cm]{Images/nikkei.jpg}
\end{center}
Ainsi, le panier "Classique" est diversifié par ces trois indices,
et témoigne ainsi d'une exposition aux marchés européens, des
Etats-Unis et japonais, par le biais des plus importantes
entreprises sectorielles.
\newpage
\subsubsection{Panier "Croissance"}
\noindent Ce panier est composé du panier "Classique" ainsi que des indices suivants:\\
\noindent $\bullet$ \underline{Nasdaq 100:}\\
Le Nasdaq 100 est un indice des marchés \textbf{actions} de la \textbf{Nouvelle Economie américaine}. Il regroupe les 100 sociétés technologiques à plus fortes capitalisations boursières.\\
Voici à titre indicatif son évolution depuis le 14 mars 2003.\\
\begin{center}
\includegraphics[width=13cm]{Images/nasdaq.jpg}
\end{center}
\noindent $\bullet$ \underline{DJ AIG Commodity Index:}\\
Le DJ AIG Commodity Index est un indice de \textbf{contrats à terme} sur \textbf{matières premières} physiques (énergie, agriculture, métaux précieux, métaux industriels, bétail). Sa performance résulte uniquement des variations des contrats à termes sous-jacents de l'indice.\\
Voici à titre indicatif son évolution depuis le 14 mars 2003.\\
\includegraphics[width=13cm]{Images/djaig.jpg}\\
Ainsi, le panier "Croissance" intègre, en plus de la diversification
aux principaux marchés actions mondiaux, une composante
\textbf{nouvelles technologies} et une composante \textbf{matières
premières}.
\newpage
\subsubsection{Panier "Global"}
\noindent Ce panier est composé du panier "Croissance" ainsi que des indices suivants:\\
\noindent $\bullet$ \underline{CECE Traded Index:}\\
Le CECE Traded Index est un indice \textbf{action} qui regroupe 25 des plus importantes capitalisations boursières de \textbf{République Tchèque}, de \textbf{Hongrie} et de \textbf{Pologne}.\\
Voici à titre indicatif son évolution depuis le 14 mars 2003.\\
\begin{center}
\includegraphics[width=13cm]{Images/cece.jpg}
\end{center}
\indent $\bullet$ \underline{KOSPI 200:}\\
Le KOSPI 200 est un indice \textbf{action} témoin des performances des 200 plus importantes et plus liquides capitalisations boursières de \textbf{Corée du Sud}.\\
Voici à titre indicatif son évolution depuis le 14 mars 2003.\\
\begin{center}
\includegraphics[width=13cm]{Images/kospi.jpg}
\end{center}
\indent $\bullet$ \underline{FTSE Xinhua China 25:}\\
Le FTSE Xinhua China 25 est un indice \textbf{action} regroupant 25 des plus importantes capitalisations boursières côtées à \textbf{Hong-Kong}.\\
Voici à titre indicatif son évolution depuis le 14 mars 2003.\\
Les données récupérées sous Fininfo nous donnent:
\begin{center}
\includegraphics[width=14cm]{Images/ftse1.jpg}
\end{center}
Il semblerait donc qu'il y ait des valeurs aberrantes. Voici le résultat obtenu lorsque nous enlevons celles-ci:
\begin{center}
\includegraphics[width=14cm]{Images/ftse2.jpg}
\end{center}
Ainsi, le panier "Global" rajoute au panier "Croissance" une composante \textbf{marchés émergents}.\\\\

\noindent\underline{Les différents paniers:} \\\\
\noindent Ils sont constitués à parts égales des indices qui les
composent.
\begin{center}
\includegraphics[width=15cm]{Images/Panier.pdf}
\end{center}

\subsection{Garantie}
\noindent BNP PANKA rémunère le détenteur du fonds par une
\textbf{performance finale} du produit, calculé en fonction des
performances des trois paniers indices.


\subsubsection{Définitions}
\noindent\underline{Dates de constatation}\\\\
On appelle dates de constatation les dates auxquelles on relève la
valeur des indices pour pouvoir calculer les performances des
différents
paniers.\\\\
Ces dates sont définies comme suit:\\
\begin{center}
\begin{tabular}{|l|c|l|c|l|c|}
\hline
\textbf{Date 0 (initiale)}  & 18/03/2008  & \textbf{Date 7 }& 18/12/2009 & \textbf{Date 14} & 16/09/2011\\ \hline
\textbf{Date 1}  & 18/06/2008  & \textbf{Date 8} & 18/03/2010 & \textbf{Date 15} & 16/12/2011\\ \hline
\textbf{Date 2}  & 18/09/2008  & \textbf{Date 9} & 18/06/2010 & \textbf{Date 16} & 19/03/2012\\ \hline
\textbf{Date 3}  & 18/12/2008  & \textbf{Date 10} & 17/09/2010 & \textbf{Date 17} & 18/06/2012\\ \hline
\textbf{Date 4}  & 18/03/2009  & \textbf{Date 11} & 17/12/2010 & \textbf{Date 18} & 18/09/2012\\ \hline
\textbf{Date 5}  & 18/06/2009  & \textbf{Date 12} & 18/03/2011 & \textbf{Date 19} & 18/12/2012\\ \hline
\textbf{Date 6}  & 18/09/2009  & \textbf{Date 13} & 17/06/2011 & \textbf{Date 20 (finale)} & 18/03/2013\\ \hline
\end{tabular}
\end{center}
\noindent\underline{Performance trimestrielle d'un indice}\\\\
A chaque date de constatation trimestrielle $Cst_j$, on définit la performance trimestrielle d'un indice $S^{(i)}$ par:
$$PerfTrim\left(S^{(i)}, Cst_j\right)=\dfrac{S^{(i)}_{Cst_j}}{S^{(i)}_{Cst_0}}-1$$
Les cours utilisés sont les \textbf{cours de clôtures} aux différentes dates utilisées.\\\\
\noindent\underline{Performance trimestrielle d'un panier d'indices}\\\\
Avec les mêmes notations que précédemment, la performance
trimestrielle d'un panier d'indices $P^{(k)}$ contenant $N_k$
indices $S^{(i)}~i\in{1,\dots,N_k}$ chacun ayant une proportion
$p_i$, $\left(\sum\limits_{i = 1}^{N_k} p_i=1\right)$, dans le
panier se définit par:
\[
PerfTrim\left(P^{(k)}, Cst_j\right)=\sum\limits_{i = 1}^{N_k} {p_i .PerfTrim\left(S^{(i)},Cst_j\right)}
\]
\noindent Dans notre cas, nous avons $p_i=\frac{1}{N_k}$ $\forall i$.\\\\
\noindent\underline{Performance moyenne d'un panier d'indices}\\\\
La performance moyenne d'un panier d'indices $P^{(k)}$
($k\in{1,\dots,N}$) avec $M$ dates de constatations (on ne compte
évidemment pas la date de constatation initiale) s'écrit:
$$PerfMoy\left(P^{(k)}\right)=\dfrac{1}{M}\sum\limits_{j = 1}^M {PerfTrim\left(P^{(k)},Cst_j\right)}$$\\
Dans le cas de notre produit, les $p_i$ sont égaux. Ils sont égaux à $\frac{1}{\text{nombre d'indices dans le panier considéré}}$\\\\
\noindent\underline{Performance finale du produit BNP PANKA}\\\\
\begin{eqnarray*}
PerfFinale & = &\max \left[ {80\% .\mathop {\max }\limits_{k \in \{ 1...3\} } \left( {PerfMoy\left( {P^{(k)} } \right)} \right),0} \right]\\
& = &80\%\left[{\mathop {\max }\limits_{k \in \{ 1...3\} } \left(
{PerfMoy\left( {P^{(k)} } \right)} \right)} \right]^{+}
\end{eqnarray*}

\subsubsection{Garantie du contrat}
\noindent La garantie du contrat s'exprime à l'aide de la
performance finale exprimée plus haut.
$$Garantie=F_0(1+PerfFinale)$$
En d'autres termes, si le fonds a sur-performé en moyenne (au sens
exprimé plus haut - en moyenne, pour le meilleur des trois paniers),
alors l'acheteur recevra à maturité la somme qu'il a mis
initialement dans le fonds, revalorisé avec 80\% de cette
performance finale. Si le fonds a sous-performé, alors l'acheteur se
verra reversé la somme qu'il a mis initialement dans le fonds. Il
n'accuse aucune perte en dehors du manque à gagner par rapport à un
investissement sans risque.
\newpage
\subsection{Analyse des flux}
\noindent Le FCP Panka bénéficie d'une garantie en capital apportée
par BNP Paribas le 2 avril 2013. Pendant la durée de vie du FCP,
l'épargne fluctue à la hausse comme à la baisse selon l'évolution de
sa valeur liquidative, celle-ci dépendant des paramètres de marché.
En cas de sortie à une date autre que celle du 2 avril 2013, c'est
la valeur liquidative de Panka applicable à la date de l'opération
qui sera prise en compte. Celle-ci peut donc être inférieure à la
valeur liquidative garantie à l'échéance.\\
Deux situations sont à considérer. L'acheteur ne se retire pas du
fonds avant maturité ou l'acheteur se retire du fonds avant
maturité. Dans un cas comme dans l'autre, il y a un flux initial
égal à la prime initiale mise dans le fonds. Il y a ensuite un seul
autre flux, qui diffère selon les cas.

\subsubsection{Cas où l'acheteur ne se retire pas du fonds avant maturité}
\noindent Dans ce cas, l'acheteur a droit à la garantie exprimée
plus haut et
reçoit donc le flux:\\
\[
 Garantie=F_0(1+PerfFinale).
\]
\subsubsection{Cas où l'acheteur se retire du fonds avant maturité}
\noindent Si vous revendez vos parts avant l'échéance du 2 avril
2013, le prix qui vous sera proposé sera fonction des paramètres de
marché applicables à la date de l'opération. Il pourra être très
différent (inférieur ou supérieur) du montant résultant de
l'application de la
formule annoncée.\\
Dans ce cas, l'acheteur reçoit un flux égal à la valeur liquidative
du fonds au moment où il décide de s'en retirer.\\
~~\\
\noindent \textbf{Attention:} \\\\
\noindent $ - $ Le porteur ne profite pas des dividendes liés aux
actions composant les indices du Panier. \\
\noindent $ - $ Pour bénéficier de la garantie, le porteur doit avoir
souscrit ses parts avant le 14 mars 2008, 13h, et
les conserver jusqu’au 2 avril 2013.
\section{Examen des risques}
\noindent Le capital de chaque investisseur sera principalement
investi dans des instruments financiers sélectionnés par la société
de gestion. Ces instruments connaîtront les évolutions et aléas des
marchés.\\
Nous explicitons les risques liés à notre stratégie de couverture
dans la partie couverture.

\subsection{Risques découlant de la classification de l’OPCVM}
\noindent $ - $ Le Fonds PANKA est construit dans la perspective d’un
remboursement à la Date d’Echéance, et donc d’une sortie à cette
date. Avant la Date d’Echéance, la valeur liquidative du Fonds est
soumise à l’évolution des marchés et aux risques inhérents à tout
investissement. La valeur liquidative peut évoluer à la hausse comme
à la baisse. Une sortie de l’OPCVM à une autre date que celle
d’échéance de la garantie s’effectuera à un prix qui dépendra des
paramètres de marché applicables à la date de l’opération selon les modalités de souscriptions/rachats. Le souscripteur prend donc
risque en capital non mesurable a priori s’il est contraint de
racheter ses parts en dehors de la Date d’Echéance.\\
\noindent $ - $ La garantie ne prend pas en compte l’évolution de
l’inflation à la Date d’Echéance.
\subsection{Risques liés aux spécificités de la stratégie
d’investissement de l’OPCVM}
\noindent$ - $ Risque de baisse des
marchés d’actions des zones concernées par les indices sous-jacents
aux 3 paniers (zone euro, Etats-Unis,
Japon, Europe de l’Est, Corée du Sud et Chine).\\
\noindent $ - $ Risque de baisse de l’indice matières premières.\\
\noindent $ - $ Risques de contrepartie: Les contrats sur instruments
financiers à terme conclus de gré à gré (swaps) par le Fonds
générent un risque de contrepartie (risque que la contrepartie ne
puisse honorer ses engagements au titre des instruments financiers à
terme).

\subsection{Risques de marché}
\noindent$\ - $ Risque lié aux marchés de taux : avant la Date
d’Echéance, une hausse des taux d’intérêt de maturité égale à celle
de l’échéance
de la garantie, provoque une baisse de la valeur liquidative.\\
\noindent $ - $ Risque lié aux marchés d’actions : avant la Date
d’Echéance, une évolution à la baisse du cours des actions des
indices provoque une baisse de la valeur liquidative.\\
\noindent $ - $ Risque lié aux marchés de matières premières : le
porteur est exposé aux risques liés aux évolutions de l’indice Dow
Jones AIG Commodity Index et notamment à la baisse de l’indice. En
cas de baisse de l’indice, la valeur liquidative du fonds baissera.
\newpage
\section{Frais, Commissions et Fiscalité}
\subsection{Commissions de souscription et de rachat}
\noindent Les commissions de souscription et de rachat viennent
augmenter le prix de souscription payé par l’investisseur ou
diminuer le prix de remboursement. Les commissions acquises à
l’OPCVM servent à compenser les frais supportés par l’OPCVM pour
investir ou désinvestir les avoirs confiés. Les commissions non
acquises à l’OPCVM reviennent à la société de gestion, au
commercialisateur, etc.
\begin{center}
\includegraphics[width=15cm]{Images/Commissions.pdf}
\end{center}
\noindent Ce barème est applicable au lendemain de la création du
Fonds.

\subsection{Frais de fonctionnement et de gestion}
\noindent Ces frais recouvrent tous les frais facturés directement à
l’OPCVM, à l’exception des frais de transaction. Les frais de
transaction incluent les frais d’intermédiation (courtage, impôts de
bourse, etc...) et la commission de mouvement, le cas échéant, qui
peut être perçue notamment par le dépositaire et la société de
gestion.\\
Aux frais de fonctionnement et de gestion peuvent s’ajouter :\\
\indent $ - $ Des commissions de surperformance. Celles-ci
rémunèrent la société de gestion dès lors que l’OPCVM a dépassé ses
objectifs. Elles sont donc facturées à l’OPCVM.\\
\indent $ - $ Des commissions de mouvement facturées à l’OPCVM ;\\
\indent $ - $ Une part du revenu des opérations d’acquisition et
cession temporaire de titres.

\begin{center}
\includegraphics[width=15cm]{Images/Frais.pdf}
\end{center}

\subsection{Régime fiscal}
\noindent L’unité de compte correspondant à ce Fonds peut-être
proposée dans des contrats d’assurance vie ou de capitalisation des
sociétés d’assurance du Groupe BNP Paribas. Les plus-values et
revenus éventuels liés à la détention de parts de l’OPCVM peuvent
être soumis à taxation en fonction des régimes fiscaux.

\section{Etude sur les données historiques du marché}
Cette partie calcule les rendements du fonds si celui-ci avait été proposé par le passé. Dans cet exemple, nous simulons la rentabilité annualisée pour le client sur la période de lancement qui se situe entre le 6 Novembre 2000 et le 6 Novembre 2003. C'est-à-dire que nous simulons, pour chaque semaine entre ces 2 dates, la date initiale du fonds. Nous obtenons donc 5 ans plus tard les rendements annuels moyens dont bénéficie le client. Cela nous donne des échéances situées entre les  6 Novembre 2005 et le 6 Novembre 2008. On trace alors la courbe du rendement sur cette dernière période. En abscisse se trouvent les semaines. 
On note par exemple que si le client avait investi le 6 Novembre 2003, il aurait alors bénéficié d’un rendement de 9\% annuel, récupérant son argent majoré de la performance finale 5 ans plus tard, à savoir le 6 Novembre 2008. Si en revanche il avait investi le 6 Novembre 2000, il aurait récupéré son argent le 6 Novembre 2005 avec un rendement de 0\% annuel. La meilleure période d’investissement aurait alors été aux alentours du mois de Juin 2008.
Pour les besoins de l’étude, l’indice FTSE Xinhua China 25 n’étant calculé que depuis le 1er Février 2002, nous avons remplacé cet indice pour les dates précédant 2002 par le Hang Seng.\\\\
L’algorithme utilisé afin de calculer ces rendements est le suivant (il est disponible à la fin de ce rapport, en R) :\\\\
$\bullet$ Récupération des 8 indices\\\\
$\bullet$ Formation des 3 paniers\\\\
$\bullet$ Chaque 7 jours, depuis la date initiale :\\\\
~~~- calcul des 20 dates de références trimestrielles\\
~~~- calcul des performances moyennes des 3 paniers\\
~~~- calcul de la performance finale\\\\
$\bullet$ Les rendements obtenus sont alors reportés sur le graphe suivant :\\\\
\begin{center}
\includegraphics[width=13cm]{Images/rendement.jpg}
\end{center}
\newpage
Ce deuxième graphe calcule les performances moyennes sur 5 ans des 3 paniers sur la même période. On peut voir qu’ici, le panier global domine :\\\\
\begin{center}
\includegraphics[width=13cm]{Images/paniers.jpg}
\end{center}
\chapter{Valorisation et couverture du contrat}
\minitoc%
\newpage
\section{Valorisation}
L'objectif de la valorisation du contrat est de déterminer le prix d'un portefeuille de couverture pour ce contrat. En absence d'opportunité d'arbitrage, ce prix est unique quelque soit la composition du portefeuille de couverture. Le portefeuille doit permettre de répliquer les flux de la formule. Dans notre cas, notre portefeuille de couverture doit donc répliquer le flux terminal, qui représente le montant versé par le vendeur du contrat à l'acheteur.
\subsection{Théorême général de valorisation}
On note $\Pi_t\left( \Psi_T\right) $, la valeur, unique par AOA, d'un portefeuille de couverture répliquant le payoff $\Psi_T$.\\\\
\begin{fminipage}{15cm}
\textbf{Théorême général de valorisation}\\\\
Soit $V_t(\delta)=\mathbb{E}_\mathbb{Q}\left.\left[ e^{-\int_t^Tr_sds}\Psi_T\right|\mathcal{F}_t\right] $,\\\\
Si le nombres de titres est égale au nombre de bruits et que la matrice de volatilité est inversible, alors il existe une stratégie de couverture $(\delta_t)_t$ telle que $V_t(\delta)=\Pi_t\left( \Psi_T\right)$
\end{fminipage}\\\\\\
\textbf{Preuve:}\\\\
On pose 
\[
M_t  = \mathbb{E}_\mathbb{P} \left( {\left. {L_T e^{ - \int_0^T {r_s ds} } \Psi _T } \right|\mathcal{F}_t } \right)
\]
L'inégalité de Hölder donne
\[
\left\| {L_T e^{ - \int_0^T {r_s ds} } \Psi _T } \right\|_{\mathcal{L}^1 }  \le \underbrace {\underbrace {\left\| {\mathcal{F}_T } \right\|_{\mathcal{L}^p } }_{ <+ \infty } + \underbrace {\left\| {e^{ - \int_0^T {r_s ds} } } \right\|_{\mathcal{L}^q } }_{ <+ \infty } + \underbrace {\left\| {\Psi _T } \right\|_{\mathcal{L}^r } }_{ <+ \infty }}_{< + \infty }\text{~~~~~}\left( \frac{1}{p}+\frac{1}{q}+\frac{1}{r}=1\right) 
\]
Donc $M_t$ est bien définie.\\\\
De plus $M_t$ est une $\mathbb{P}$-martingale.\\
En effet
\[
M_s  = \mathbb{E}_\mathbb{P} \left[ {\left. {\mathbb{E}_\mathbb{P} \left( {\left. {L_T e^{ - \int_0^T {r_s ds} } \Psi _T } \right|\mathcal{F}_t } \right)} \right|\mathcal{F}_s } \right]
\]
$\bullet$ Par définition,
\[
M_t  = \mathbb{E}_\mathbb{P} \left( {\left. {L_T e^{ - \int_0^T {r_s ds} } \Psi _T } \right|\mathcal{F}_t } \right)
\]
En appliquant la formule de Bayes, il vient
\begin{eqnarray*}
M_t  & = & L_t e^{ - \int_0^t {r_s ds} }\mathbb{E}_\mathbb{Q} \left( {\left. {e^{ - \int_t^T {r_s ds} } \Psi _T } \right|\mathcal{F}_t } \right)\\
& = &  L_t e^{ - \int_0^t {r_s ds} }V_t
\end{eqnarray*}
En appliquant le théorême de représentation des martingales, on peut écrire qu'il existe un processus prévisible $(h_s)_s$ vérifiant $\int_0^T|h_s|^2ds<+\infty p.s$, tel que
$$M_t=M_0+\int_0^th_s~.~d\widehat{W}_s$$
$\bullet$ Posons $H_t=L_t^{-1}e^{\int_0^tr_sds}$\\
La décomposition d'Itô de $H_t$ s'écrit $$\dfrac{dH_t}{H_t}=\lambda_td\widehat{W}_t+\left( r_t+|\lambda_t|^2\right)dt $$
$\bullet$ Nous pouvons à présent calculer la dynamique de $V_t$\\
\begin{eqnarray*}
dV_t & = & H_tdM_t +M_tdH_t + <dH_t,dM_t>\\
& = & rV_tdt +\left( \lambda_t V_t +H_th_t\right)~.~\left( \lambda_t dt +d\widehat{W}_t\right)  
\end{eqnarray*}
On pose $\sigma*_t\left( \delta S\right)_t =\left( \lambda_t V_t +H_th_t\right)$\\
Ainsi, 
$$dV_t=rV_tdt +\sigma*_t\left( \delta S\right)_t~.~\left( \lambda_t dt +d\widehat{W}_t\right)$$
$V_t$ est donc bien la valeur d'un portefeuille autofinançant répliquant le payoff $\Psi_T$, avec pour couverture associée $\delta$ donnée par $\sigma*_t\left( \delta S\right)_t$. Si la matrice de volatilité est inversible on peut donc exhiber la stratégie de couverture.
\begin{flushright}
\rule{0.2cm}{0.2cm}
\end{flushright}
Nous avons ainsi montré que dans le cadre des hypothèses de ce théorême, cadre dans lequel nous supposons être, l'existence d'un portefeuille de couverture est assurée.\\\\
\textbf{Remarque:}\\\\
L'existence du portefeuille de couverture, ainsi que la stratégie de couverture sont assurés, mais le théorême ne donne pas une forme explicite de la stratégie.
\section{Couverture}
\subsection{Calcul de la stratégie de couverture}
Nous notons $S_t^i\text{~~} i\in\{1\dots 8\}$ et $S_t^0$ l'actif sans risque.\\
Nous savons maintenant que dans le cadre dans lequel nous nous plaçons, il existe un portefeuille autofinançant $V(t,S_t^i ;i = 1...8)$ tel que $V(T,S_T^i ;i = 1...8)=\Psi_T$. Avec $\Psi_T$ le payoff du contrat.
En appliquant la formule d'Itô à
$$V(t,S_t^i ;i = 1...8)$$
On obtient
\[
dV(t,S_t^i ;i = 1...8) = V'_t (t,S_t^i ;i = 1...8)dt + \sum\limits_{i = 1}^8 {V'_{S_t^i } (t,S_t^i ;i = 1...8)dS_t^i }  + (...)dt
\]
Nous obtenons ainsi le nombre $\delta_t^i$ en actif $S_t^i$ pour consituer notre portefeuille de couverture:
\[
\delta _t^i  = \frac{{\partial {{V(t}}{{,S}}_{{t}}^{{i}} {{ ;i  =  1}}...{{8)}}}}
{{\partial S_t^i }}\text{~~}i\in \{1\dots 8\}
\]
La quantité de cash $\delta_t^0$ à mettre dans le portefeuille étant donnée par 
$$\delta_t^0=\frac{V_t-\sum_{i=1}^8\delta_t^iS_t^i}{S_t^0}$$
\subsection{Couverture delta-neutre: Méthode des deltas}
Une couverture parfaite du produit, si on suppose qu'il n'existe pas de coûts de transactions, consisterait à rebalancer continument notre portefeuille de couverture précédent selon les $\delta_t^i;i={0\dots 8}$ précédemment calculés.\\
Il est impossible de faire cela en pratique, les prises de positions ne peuvent pas être continues. Nous devons donc rebalancer notre portefeuille de façon discrète.\\
Le delta-hedging consiste à rebalancer le portefeuille de façon discrète, mais avec les valeurs $\delta_t^i;i={0\dots 8}$ précédemment calculés:
\[
\delta _t^i  = \frac{{\partial {{V(t}}{{,S}}_{{t}}^{{i}} {{ ;i  =  1}}...{{8)}}}}
{{\partial S_t^i }} \text{~~}i\in \{1\dots 8\}
\]
La quantité de cash $\delta_t^0$ à mettre dans le portefeuille étant donnée par 
$$\delta_t^0=\frac{V_t-\sum_{i=1}^8\delta_t^iS_t^i}{S_t^0}$$
On s'immusinise donc contre les variations d'ordre 1 des actifs sous-jacents du contrat. Puisque nous rebalançons de façon discrète avec les mêmes valeurs que si nous le faisions continument, on ne peut donc pas couvrir le contrat optimalement, car nous ne pouvons égaler la valeur du portefeuille optimal. Cependendant nous verrons avec les simualtaions, que pour des rebalencement suffisamment fréquent, on arrive à couvrur le contrat de façon très staisfaisante. Nous pourrons améliorer notre couverture, en utilisant une stratégie delta-gamma neutre.
\subsection{Une autre stratégie possible: "Stratégie stop-loss"}
Au vu de la conjoncture actuelle avec la crise financière, tous les
indices sont en situation de baisse. Une stratégie serait de garder
une position pseudo-nulle en attendant que la crise se termine. On
place tout le cash dans l'actif sans risque en attendant que la
valeur liquidative du fonds redépasse les 200 euros. Une fois cette
frontière dépassée, on utilisera la précédente stratégie. Cette
stratégie permettrait d'économiser les frais de transactions
inhérents à la précédente stratégie sur toute la période de la
crise.
\section{Risques liés à la stratégie de couverture}
\subsection{Risques liés aux spécificités de la stratégie d’investissement}
\noindent$ - $ Risque de baisse des marchés d’actions des zones
concernées par les indices sous-jacents aux 3 paniers (zone euro,
Etats-Unis, Japon, Europe de l’Est, Corée du Sud et Chine) étant donné que nous investissons dedans.\\
\noindent $ - $ Risque de baisse de l’indice matières premières.\\
\noindent $ - $ Risques de contrepartie: Les contrats sur instruments
financiers à terme conclus de gré à gré (swaps) peuvent générer un
risque de contrepartie (risque que la contrepartie ne puisse honorer
ses engagements au titre des instruments financiers à terme). Nous
pouvons par exemple utiliser des swaps pour nous couvrir contre les
risques de taux ou de change ce qui n'est pas le cas pour le moment.
\subsection{Risques de marché}
\noindent$ - $ Risque lié aux marchés de taux : Nous placons une partie du portefeuille dans l'actif sans risque. Nous sommes exposés aux évolutions des taux d'intérêt.\\
\noindent$ - $ Risque lié aux marchés de change : Nous investissons dans des indices cotés dans plusieurs devises étrangères. Nous sommes exposés au taux de change entre ces devises et l'euro.\\
\noindent $ - $ Risque lié aux marchés d’actions : Nous investissons dans différentes actions. Nous sommes donc exposés à leur évolution.\\
\noindent $ - $ Risque lié aux marchés de matières premières : nous
sommes exposés aux risques liés aux évolutions de l’indice Dow Jones
AIG Commodity Index.
\section{Simulation}
\subsection{Rappel sur les méthodes de Monte-Carlo}
\noindent Nous avons vu que le problème de pricing au temps initial
se résume à trouver la valeur:
\[
   {V_0 } = {\mathds{E}_\mathds{Q} (e^{ - rT} h(S_T^1 , \ldots ,S_T^8 ))}
\]
\noindent Il s'agit en fait d'estimer une espérance, donc il suffit
d'effectuer la moyenne des résultats d'un grand nombre de
simulations de la variable aléatoire ( Dans notre cas il s'agit de
la valeur actualisée du payoff.) dont on veut connaître l'espérance.
\noindent Pour tester notre couverture, nous avons implémenté un
programme qui calcule le prix du fonds et du portefeuille de
couverture pour chaque date de trading.

\subsection{Algorithme en pseudo-code:}
\noindent \textbf{Pour chaque date de trading $t$}
\indent On calcule le prix du fonds\\
\indent On calcule le prix du portefeuille de couverture:\\
\indent \indent - $V=0$ si $t=0$\\
\indent \indent - $V=0$ sinon\\
\indent On calcule les deltas pour chaque indice en utilisant les
dérivés numériques\\
\indent On calcule le $delta0$: la part dans l'actif sans risque\\
\indent \textbf{Si t est une date de constatation}\\
\indent \indent On met à jour les différents paramètres pour le
pricing\\
\indent\textbf{Fin si}\\
\indent On met à jour les différents indices\\
\textbf{Fin Pour}\\
On calcule la tracking error, le prix du fond et le prix du
portefeuille de couverture à l'échéance du contrat.

\subsection{Implémentation C++}
Architecture informatique existante
Au début du projet, nous avons implémenté un pricer, en C++, permettant de connaitre le prix du produit à tout moment, à partir de sa date initiale.
Dans cette version, les différents paramètres tels que la volatilité sont issus d’études statiques sur les 
données historiques.
L’architecture en C++ vise à créer une interface \texttt{pricer}. Cette classe contient les méthodes virtuelles pures nécessaires au pricing.
L’unique classe (pour l’instant, tout du moins) qui dérive de cette interface est la classe \texttt{MonteCarlo}, qui implémente un algorithme de pricing basé sur la méthode de Monte Carlo, reposant sur un certains nombre de simulations, sur lesquelles l’on peut extraire la tendance moyenne de la valeur de notre produit.
A terme, notre moteur de calcul devra pouvoir gérer les paramètres des données historiques d’une manière dynamique, afin de proposer au gérant du produit une mise à jour en temps réelle des différentes informations.
\newpage
Voici le diagramme de classes de cette première implémentation :\\\\
\begin{center}
\includegraphics[width=13cm]{Images/diagramme_classes.jpg}
\end{center}
\textbf{Version dynamique}\\\\
La prochaine étape consiste en une gestion dynamique de la base de données. Pour cela, la base de données Fininfo en temps réel permet une actualisation continue des données sous excel.
L’avantage de Fininfo étant que l’on peut travailler depuis notre propre version d’excel. Il restera alors à traiter les données via le moteur de calculs en C++.\\
\noindent\textbf{Schéma de l’architecture}\\\\
L’architecture comporte trois principaux modules : \\\\
\noindent$\bullet$ Une base de données, depuis laquelle nous irons chercher les informations nécessaires au pricing et à la couverture. Cette base de données sera représentée par Reuters ou Fininfo. Une autre base de données afin de stocker la composition du portefuille de couverture du gérant.\\\\
$\bullet$ Un moteur de calcul en C++, afin de pricer et d’obtenir le portefeuille de couverture mis à jour en temps réel. Nous avons choisi une implémentation C++ afin d’obtenir les meilleures performances possibles, les calculs pouvant se révéler coûteux.\\\\
$\bullet$ Un classeur Excel ainsi qu'une interface Web permettant au gérant de gérer son portefeuille, et d’avoir accès à toutes les données de marché pouvant l’aider dans ses décisions (évolution des paniers, évolution du cours des indices concernant le produit structuré)
\newpage
C’est donc une architecture 3-tiers, disposant d’une base de données, d’une couche de calcul et d’une couche gérant l’interface graphique :\\
\begin{center}
\includegraphics[width=13cm]{Images/archi.jpg}
\end{center}
Une couche afin de rendre la base de données plus agréable à utiliser est prévue. Des procédures seront fournies afin de pouvoir travailler avec les bonnes données, de manière rapide et directe, sans avoir à se soucier du schéma de la base de données. Cela permet donc éventuellement d’utiliser plusieurs bases de données, sans avoir à modifier le moteur de calcul en C++.\\\\
Un contrôleur pour l’interface Excel permettra de gérer la vue que le gérant aura devant ses yeux.\\\\
\textbf{Données à récupérer}\\\\
Il s’agit de récupérer les cours des différents indices, en temps réel, afin de pouvoir pricer le produit et le portefeuille de couverture, et d’obtenir différentes informations sur les paniers, le cours des indices…
Dans un premier temps, nous comptons récupérer ces données via Reuters ou Fininfo directement dans excel, puis les transmettre au moteur de calcul via une couche d’accès à la base de données.
Dans l’idéal, il faudrait trouver une API nous permettant d’accéder directement à la base de données, sans passer par Excel.\\\\
\textbf{Adaptation du pricer au temps réel – Calculs effectués}\\\\
Nous allons garder les méthodes de pricing déjà implémentées. Il faudra les adapter à l’utilisation temps réelle. C'est-à-dire aller chercher les cours historiques de nos indices dans la base de données, et recalculer les paramètres comme la volatilité avant de pricer.\\\\
Nous allons utiliser la librairie de calcul \texttt{normAF} de Raise Partner pour les simulations. En effet, celle-ci permet de simuler les browniens avec la matrice de covariance en utilisant la décomposition de Cholesky.\\\\
\textbf{Interface à réaliser}\\\\
L’interface est composée de 3 parties : une vue récapitulative, une vue permettant de mettre à jour le portefeuille de couverture, une vue simulation.\\\\
La  vue récapitulative (affichage des différentes informations nécessaires au gérant) :\\\\
\noindent $\bullet$ Cours des 8 indices (avec graphique)\\
$\bullet$ Prix du produit\\
$\bullet$ Prix du portefeuille de couverture\\
$\bullet$ Tracking error : différence de prix entre le prix du fonds et celui du portefeuille de couverture\\
$\bullet$ Volatilité et rendement pour chaque indice et chaque panier\\
$\bullet$ Constitution du portefeuille de couverture\\
$\bullet$ La mise à jour du portefeuille de couverture :\\
\indent$ - $ Affichage actualisé des deltas du portefeuille de couverture\\
\indent$ - $ Passage d’ordres afin d’actualiser la constitution du portefeuille de couverture\\
La vue simulation :\\
$\bullet$ Simulation de l’évolution du fonds et du portefeuille de couverture en utilisant la libraire raise partner

\section{Résultats des
simulations}

\noindent Pour effectuer les simulations, nous calibrons nos
paramètres de volatilité sur les volatilités historiques de chaque
indice. Comme les simulations se font sous la probabilite risque-neutre $\mathds{Q}$ tous
 les indices ont le même rendement $r$ qui correspond au taux de rendement
  des actifs sans risque avec une maturité de 5 ans\\
Nous prenons dans notre programme, un pas de taille $T/20$. Nous calculons donc nos volatilités historiques sur des intervalles de taille $T/20$.
~~\\
\begin{center}
\begin{tabular}{||c|c||}
  \hline
  % after \\: \hline or \cline{col1-col2} \cline{col3-col4} ...
  $\sigma_1$ &  0.1130
    \\ \hline
  $\sigma_2$ & 0.1123
     \\ \hline
  $\sigma_3$ & 0.1478
    \\ \hline
  $\sigma_4$& 0.1422
    \\ \hline
 $\sigma_5$ & 0.1341
     \\ \hline
 $\sigma_6$ & 0.1955
    \\ \hline
  $\sigma_7$ & 0.1401
    \\ \hline
  $\sigma_8$ & 0.2296\\
  \hline
\end{tabular}
\end{center}
~~\\

Le code de la fonction \texttt{graph\_prix} se trouve en Annexe C.1.

\subsection{Résultats}
\subsubsection{Prix initial du contrat}
 \noindent Voici "le" résultat obtenu avec 10 000 scénarios:\\
 \begin{verbatim}
Resultats avec M=10000 simulations
moyenne empirique=199.036;
 variance empirique=29.2645;
 ecart-type=5.40967;
 1.96 sigma/sqrt{M}=0.10603
\end{verbatim}\\
 \noindent Voici "le" résultat obtenu avec 100 000 scénarios:\\
 \begin{verbatim}
Resultats avec M=100000 simulations
moyenne empirique=198.94;
 variance empirique=28.5987;
 ecart-type=5.34777;
 1.96 sigma/sqrt{M}=0.0331458
\end{verbatim}\\
 \noindent Voici "le" résultat obtenu avec 1 000 000 de scénarios:\\
 \begin{verbatim}
Resultats avec M=1e+06 simulations
moyenne empirique=198.959;
 variance empirique=28.6973;
 ecart-type=5.35698;
 1.96 sigma/sqrt{M}=0.0104997
 \end{verbatim}
  \noindent Voici "le" résultat obtenu avec 10 000 000 de scénarios:\\
 \begin{verbatim}
 Resultats avec M=1e+07 simulations
moyenne empirique=198.962;
 variance empirique=28.6999;
 ecart-type=5.35723;
 1.96 sigma/sqrt{M}=0.00332044
 \end{verbatim}
 \subsubsection{Valorisation et couverture au cours du temps}
\noindent Nous simulons notre couverture en utilisant les volatilités historiques et les prix initiaux de chaque indice au début du lancement du projet.
Nous la mettons à jour toutes les semaines (période=52).\\
Nous avons choisi pour notre simulation:\\
\indent Nombre de simulation = 100 (cf calcul des deltas et du prix du fonds par Monte Carlo)\\
\indent Taux sans risque=0.0415\\
\indent Epsilon =0.00001 (cf calcul des deltas)\\\\
\newpage
\textbf{Graphique}
\begin{center}
\includegraphics[width=15cm]{Images/couv.jpg}
\end{center}
\noindent La simulation de la couverture est satisfaisante. On
remarque bien que notre couverture "colle" à la courbe du prix.\\\\
Remarquons que le portefeuille de couverture ne part pas de 200. En effet la valeur du contrat aujourd'hui est légèrement inférieure au prix annoncé dans la brochure commerciale. Cette différence fait partie de la marge effectuée par la banque.\\\\
\textbf{Tracking error}\\\\
On obtient une tracking error de $0,003$ à l'échéance, la moyenne
des valeurs absolues de la tracking error sur l'ensemble de la
simulation étant de $0,23$.\\
Les résultats sont satisfaisant pour une couverture mise à jour
toutes les semaines sachant que théoriquement elle serait parfaite
en temps continus.
\chapter{Gestion de projet}
\section{Diagramme de Gantt}
\includepdf[pages=-]{Images/onp.pdf}
%\subsection{Description du modle}
%\subsection{Valorisation}
%\subsection{Calcul des grecques}
%
%
%\chapter{Conclusion}
\appendix
\chapter{Implémentation du pricing par méthodes de Monte-Carlo}
\section{\tt lancement.cpp\rm}
\begin{lstlisting}
/*
 * File:   lancement.cpp
 * Author: groupe1
 *
 * Created on 11 novembre 2008, 13:09
 */

# include <stdlib.h>
# include <stdio.h>
# include <cstdlib>
# include <iostream>
# include <iomanip>
# include <cmath>
# include "math.h"
# include "pricing.h"
# include <vector>

using namespace std;

int main(int argc, char** argv) {
  double moy = 0 ;
  double var = 0 ;
    vector<double> vol(8);
    double nbsim,r;
    nbsim =100000;
    r=0.08;
    vol[0]=0.1130;
    vol[1]=0.1123;
    vol[2]=0.1478;
    vol[3]=0.1422;
    vol[4]=0.1341;
    vol[5]=0.1955;
    vol[6]=0.1401;
    vol[7]=0.2296;
    MonteCarlo *pricer = new MonteCarlo() ;
    pricer->calcul_prix(nbsim, moy, var, vol, r);
    cout << setw(6) << "Resultats avec M=" << nbsim << " simulations\n";
    cout << "moyenne empirique=" << moy << ";\n variance empirique=" << var << ";\n ecart-type=" << sqrt(var) << ";\n 1.96 sigma/sqrt{M}=" << 1.96*sqrt(var)/sqrt(nbsim) <<"\n";
    delete pricer ;
    return (EXIT_SUCCESS);
}
\end{lstlisting}
\section{\tt pricing.h\rm}
\begin{lstlisting}
/*
 * File:   pricing.h
 * Author: groupe1
 *
 * Created on 11 novembre 2008, 13:09
 */

# include <vector>

#ifndef _PRICING_H
#define _PRICING_H

class Pricer {
 protected:
  double max2 (double a, double b) ;
  double max3(double a, double b, double c) ;
 public:
  virtual void calcul_prix(double, double&, double&, std::vector<double>, double) = 0 ;
};


class MonteCarlo : public Pricer {
 private:
  double alea() ;
  double gauss_BoxMuller() ;
 public:
  void calcul_prix(double, double&, double&, std::vector<double>, double) ;

};

#endif
\end{lstlisting}
\section{\tt pricing.cpp\rm}
\begin{lstlisting}
/*
 * File:   pricing.cpp
 * Author: groupe1
 *
 * Created on 11 novembre 2008, 13:10
 */

# include <stdlib.h>
# include <stdio.h>
# include <cstdlib>
# include <iostream>
# include <iomanip>
# include <cmath>
# include "math.h"
# include "pricing.h"

using namespace std;

double Pricer::max2(double a,double b){
    if (a<b){
        return b;
    }
    else{
        return a;
    }
}
double Pricer::max3(double a, double b, double c){
    return(max2(a,max2(b,c)));
}


double MonteCarlo::alea() {
  return drand48(); // A changer sous Windows.
}

double MonteCarlo::gauss_BoxMuller() {
  static int iset=0;
  static double gset;
  double u1,u2;
  double r,theta;

  if(iset==0){
    u1=alea();
    u2=alea();
    r=sqrt(-2.0*log(u1));
    theta=6.28318*u2;
    gset=r*cos(theta);
    iset=1;
    return r*sin(theta);
  }
  else{
    iset=0;
    return gset;
  }
}



void MonteCarlo::calcul_prix(double nbsim,double &moy,double &var, vector<double> sigma,double r){
  //Tests des parametres
//  for (int i = 0 ; i < 8 ; ++i ) {
//    std::cout << sigma[i] << " " << std::endl ;
//  }
//  cout << "r vaut : " << r << endl ;

  long i,j,k,l;
    double moycarres, pas;
    double perf_pan0,perf_pan1,perf_pan2;
    double moy_perf_pan0,moy_perf_pan1,moy_perf_pan2;
    double ind[8];
    double perf_ind[8];
    double perf_finale;
    double T;

    moy = 0 ;
    moycarres = 0 ;
    moy_perf_pan0 = 0 ;
    moy_perf_pan1 = 0 ;
    moy_perf_pan2 = 0 ;

    T=1;
    moycarres=0;
    pas=T/20;
    srand48(time(NULL));
    for (i=0; i<nbsim; i++) {
        if (((i+1)*10.0)/nbsim == (int)(((i+1)*10)/nbsim)){
            //system("clear");
            cout << ((i+1)*10.0)/nbsim *10<<"% effectues"<<endl;

        }

        for (k=0;k<8;k++){
            ind[k]=1;
        }
        for (j=0; j<20;j++){
            for (k=0;k<8;k++){
               ind[k]=ind[k]*exp((r-0.5*sigma[k]*sigma[k])*pas+sigma[k]*sqrt(pas)*gauss_BoxMuller());
               perf_ind[k]=ind[k]-1;
            }
            perf_pan0=(perf_ind[0]+perf_ind[1]+perf_ind[2])/3;
            perf_pan1=(3*perf_pan0+perf_ind[3]+perf_ind[4])/5;
            perf_pan2=(5*perf_pan1+perf_ind[5]+perf_ind[6]+perf_ind[7])/8;

            moy_perf_pan0=moy_perf_pan0+perf_pan0;
            moy_perf_pan1=moy_perf_pan1+perf_pan1;
            moy_perf_pan2=moy_perf_pan2+perf_pan2;
        }
        moy_perf_pan0=moy_perf_pan0/20;
        moy_perf_pan1=moy_perf_pan1/20;
        moy_perf_pan2=moy_perf_pan2/20;

        perf_finale=0.8*max2(max3(moy_perf_pan0,moy_perf_pan1,moy_perf_pan2),0);
        moy=moy+200*(1+perf_finale);
        moycarres=moycarres+(200*(1+perf_finale))*(200*(1+perf_finale));
    }
    moy=moy/nbsim;
    moycarres=moycarres/nbsim;
    var=moycarres-moy*moy;

    moy=exp(-r*T)*moy;
}
\end{lstlisting}
\chapter{Implémentation de la simulation de couverture}
\section{\tt Fonction graph\_prix \rm}
\begin{lstlisting}
double MonteCarlo::graph_prix(int nbsim, int periode, vector<double>
sigma, vector<double> mu, vector<double> ind0, double r, double T,
double eps){
    int i,j,k;
    i=0;
    j=0;
    k=0;
    vector<double> ind(8);
    //vector<double> indold(8);
    vector<double> moy_perf_pan_t(3);
    moy_perf_pan_t[0]=0;
    moy_perf_pan_t[1]=0;
    moy_perf_pan_t[2]=0;
    vector<double> perf_ind(8);
    for (k=0;k<8;k++){
        ind[k] = ind0[k];
        //indold[k] = ind0[k];
        perf_ind[k]=0;
    }
    double pas;
    pas = T/(5*periode);
    double gar;
    double prix;
    double perf_pan0,perf_pan1,perf_pan2;
    perf_pan0 = 0;
    perf_pan1 = 0;
    perf_pan2 = 0;
    // fichiers sorties
    ofstream couvtxt("couv.txt");
    ofstream deltastxt("deltas.txt");
    ofstream delta0txt("delta0.txt");
    ofstream prixtxt("prix.txt");
    ofstream testtxt("test.txt");
    double perf_finale;
    perf_finale=0;
    double Prix_t_p_eps=0;
    double Prix_t_m_eps=0;
    vector<double> delta(8);
    vector<double> indt_p_eps(8);
    vector<double> indt_m_eps(8);
    for (i=0;i<8;i++){
        delta[i]=0;
        indt_p_eps[i] = 0;
        indt_m_eps[i] = 0;
    }
    double t=0;
    double delta0=0;
    double V=0;
    for (j=0; j<=int(T*5*periode);j++){
        // Avancement
        if (((j+1)*10.0)/int(T*5*periode) == (int)(((j+1)*10)/int(T*5*periode))){
           cout << ((j+1)*10.0)/int(T*5*periode) *10<<"% effectues"<<endl;
        }
        t=(double)j/(5*periode);
        cout << " Calcul pour t = " << (float)t << "\n" <<endl;
        // Calcul des portefeuilles
        prix=MonteCarlo::calcul_prix(periode,ind0,ind,moy_perf_pan_t,t,T,nbsim,sigma,r);
        if (t==0)
            V=prix;
        else{
            V=delta[0]*ind[0]+delta[1]*ind[1]+delta[2]*ind[2]+delta[3]*ind[3]+delta[4]*ind[4]+delta[5]*ind[5]+delta[6]*ind[6]+delta[7]*ind[7]+delta0*exp(r*t);
        }
        prixtxt<<prix<<endl;
        couvtxt<<V<<endl;
        //Affichage des portefeuilles
        cout<< " Prix\t=\t" <<prix<<endl;
        cout<< " V\t=\t" << V<< "\n" <<endl;
        // Calcul des deltas
        if (t!=0){
            for (i=0;i<8;i++){
                for (k=0;k<8;k++){
                    if (i==k){
                        indt_p_eps[k]=ind[k]+eps;
                        indt_m_eps[k]=ind[k]-eps;
                    }
                    else{
                        indt_p_eps[k]=ind[k];
                        indt_m_eps[k]=ind[k];
                    }
                }
                Prix_t_p_eps=MonteCarlo::calcul_prix(periode,ind0,indt_p_eps,moy_perf_pan_t,t,T,nbsim,sigma,r);
                //cout << " Prix + eps\t=\t"<< Prix_t_p_eps <<"\n";
                Prix_t_m_eps=MonteCarlo::calcul_prix(periode,ind0,indt_m_eps,moy_perf_pan_t,t,T,nbsim,sigma,r);
                //cout << " Prix - eps\t=\t"<< Prix_t_m_eps <<"\n\n";
                delta[i]=(double)(Prix_t_p_eps-Prix_t_m_eps)/(2*eps);
            }
        }
        // Affichage des deltas
        for (i=0;i<8;i++){
            cout << " delta[" << i << "]\t=\t"<< Round(delta[i],5) <<endl;
            deltastxt<<delta[i]<<endl;
        }
        deltastxt<<"\n"<<endl;
        // Calcul du delta0
        delta0=(double)((V-delta[0]*ind[0]-delta[1]*ind[1]-delta[2]*ind[2]-delta[3]*ind[3]-delta[4]*ind[4]-delta[5]*ind[5]-delta[6]*ind[6]-delta[7]*ind[7])/exp(r*t));
        // Affichage du delta0
        cout << " delta0\t\t=\t"<< delta0 << "\n\n"<< endl;
        delta0txt<<delta0<<endl;
        // On est a une ne date de constatation
        if (j%int(T*5*periode/20)==0){
            for (k=0;k<8;k++){
                perf_ind[k]=((double)ind[k]/ind0[k])-1;
            }
            perf_pan0=(double)(perf_ind[0]+perf_ind[1]+perf_ind[2])/3;
            perf_pan1=(double)(3*perf_pan0+perf_ind[3]+perf_ind[4])/5;
            perf_pan2=(double)(5*perf_pan1+perf_ind[5]+perf_ind[6]+perf_ind[7])/8;
            moy_perf_pan_t[0]=moy_perf_pan_t[0]+perf_pan0;
            moy_perf_pan_t[1]=moy_perf_pan_t[1]+perf_pan1;
            moy_perf_pan_t[2]=moy_perf_pan_t[2]+perf_pan2;
        }
        // Mise a jour des sous-jacents
        for (k=0;k<8;k++){
            ind[k]=ind[k]*exp((r-0.5*sigma[k]*sigma[k])*pas + sigma[k]*sqrt(pas)*gauss_BoxMuller());
        }
    }
    // Calcul
    perf_finale=0.8*max2(max3((double)moy_perf_pan_t[0]/20,(double)moy_perf_pan_t[1]/20,(double)moy_perf_pan_t[2]/20),0);
    gar=200*(1+perf_finale);
    cout << "\n Prix\t:\t" << gar << endl;
    cout << " V_T\t:\t" << V << endl;
    cout << " Tracking error\t:\t" << abs(V-gar) << endl;
    return abs(V-gar);
}
\end{lstlisting}

\end{document}
